﻿#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
//剑指 Offer II 058. 日程表❤️](https://leetcode.cn/problems/fi9suh/
// class MyCalendar {
// public:
//     map<int,int>hash;
//     MyCalendar() {}

//     bool book(int start, int end) {
//         cout<<hash.size()<<endl;

//         if(hash.empty())
//         {
//             hash.insert(make_pair(start,end));
//             return true;
//         }
//         if(hash.count(start)) return false;
//         hash.insert(make_pair(start,end));
//         auto pos = hash.find(start);
//         auto posnext = pos;
//         auto postprv = pos;
//         if((++posnext) != hash.end())
//         {
//             if(end <= posnext->first)
//             {
//                 if(postprv == hash.begin())
//                 {
//                     return true;
//                 }
//                 else
//                 {
//                     --postprv;
//                     if(start >= postprv->second )
//                     {
//                         return true;
//                     }
//                     else
//                     {
//                         hash.erase(start);
//                         return false;
//                     }
//                 }
//             }
//             else
//             {
//                 hash.erase(start);
//                 return false;
//             }
//         }
//         map<int,int>::iterator it = hash.begin();
//         while(it != pos && it != hash.end())
//         {
//             if(pos->first < it->second)
//             {
//                 hash.erase(pos);
//                 return false;
//             }
//             ++it;
//         }
//         return true;
//     }
// };

// class MyCalendar {
//     vector<pair<int, int>> booked;

// public:
//     bool book(int start, int end) {
//         for (auto &[l, r] : booked) {
//             if (l < end && start < r) {
//                 return false;
//             }
//         }
//         booked.emplace_back(start, end);
//         return true;
//     }
// };